﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WpfApplication2.SindicatoWebService;
using WpfApplication2.UserControls;
using System.Windows.Controls;
using WpfApplication2.Helpers;
using System.Windows.Input;
using WpfApplication2.Views.Informes;
using Microsoft.Reporting.WinForms;

namespace WpfApplication2.ViewModels.Informes
{
    public class PeriodoInformeViewModel : ViewModel
    {
        #region Properties

        public Service1SoapClient WS;

        public Instancias Instancias { get; set; }
        public Informe TipoInforme { get; set; }
        public MainWindow Main { get; set; }

        public DateTime FechaInicio
        {
            get
            {
                return fechaInicio;
            }
            set
            {
                if (fechaInicio != value)
                {
                    fechaInicio = value;
                    RaisePropertyChanged("FechaInicio");
                }
            }
        }
        private DateTime fechaInicio;

        public DateTime FechaFin
        {
            get
            {
                return fechaFin;
            }
            set
            {
                if (fechaFin != value)
                {
                    fechaFin = value;
                    RaisePropertyChanged("FechaFin");
                }
            }
        }
        private DateTime fechaFin;

        #endregion


        public PeriodoInformeViewModel(MainWindow mainWindow, Instancias instancias, Informe informe)
        {
            // TODO: Complete member initialization
            Instancias = instancias;
            this.TipoInforme = informe;
            this.Main = mainWindow;

            FechaInicio = DateTime.Now.AddMonths(-1);
            FechaFin = DateTime.Now;
        }

        #region Command Obtener Informe

        private DelegateCommand obtenerInformeCommand;

        public ICommand ObtenerInformeCommand
        {
            get
            {
                if (obtenerInformeCommand == null)
                {
                    obtenerInformeCommand = new DelegateCommand(ObtenerInforme, CanExecute);
                }
                return obtenerInformeCommand;
            }
        }

        private bool CanExecute()
        {
            return true;
        }

        private void ObtenerInforme()
        {
            if (TipoInforme == Informe.OrdenesVendidas)
            {
                Instancias.FrameContent.Content = new OrdenesVendidas(FechaInicio, FechaFin);
            }
            else if (TipoInforme == Informe.Patologias)
            {
                Instancias.FrameContent.Content = new CantidadPatologias(FechaInicio, FechaFin);
            }
        }

        #endregion
    }
}
